#pragma once
#include "CoordSys.h"
#include "GNSSSatPos.h"
#include "IonoCorr.h"
#include "TropCorr.h"
#include "ReadN.h"
#include "ReadO.h"
#include "Matrix.h"
#include <vector>

class Spp {
public:
    Spp(TimeSys* timeSys, ReadN* readN, ReadO* readO, CoordSys* coordSys, GNSSSatPos* satPos, GNSSconsts* gnssConsts, IonoCorr* ionoCorr, TropCorr* tropCorr);
    ~Spp();
    bool processEpoch(const obsEpoch& epoch, XYZ& resultPos, double& clockBias);

private:
    TimeSys* mTimeSys;
    ReadN* mReadN;
    ReadO* mReadO;
    CoordSys* mCoordSys;
    GNSSSatPos* mSatPos;
    GNSSconsts* mGnssConsts;
    IonoCorr* mIonoCorr;
    TropCorr* mTropCorr;
};